package practices;

/**
 * @program: Java_Study
 * @author: Xiaofan
 * @createTime: 2022-03-04 09:24
 * @description: Functions of this class is
 **/
public class 回溯法模板 {
    /**
     * result = []
     * void backtrack(路径, 选择列表):
     *     if 满足结束条件:
     *         result.add(路径)
     *         return
     *     for 选择 in 选择列表:
     *         做选择
     *         backtrack(路径, 选择列表)
     *         撤销选择
     *
     *  其核心就是 for 循环里面的递归，在递归调用之前「做选择」，在递归调用之后「撤销选择」
     *  for 选择 in 选择列表:
     *     # 做选择
     *     将该选择从选择列表移除
     *     路径.add(选择)
     *     backtrack(路径, 选择列表)
     *     # 撤销选择
     *     路径.remove(选择)
     *     将该选择再加入选择列表
     */
}